package com.teradata.gbase;

import com.teradata.gbase.config.DatabaseConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;

import java.sql.SQLException;

/**
 * @Project:
 * @Description:
 * @Version 1.0.0
 * @Throws SystemException:
 * @Author: <li>2019/10/10/010 Administrator Create 1.0
 * @Copyright ©2018-2019 al.github
 * @Modified By:
 */
@SpringBootApplication
@Slf4j
public class Application {

    public static void main(String[] args) throws SQLException {

        if (args.length <= 2 || args.length == 4 || args.length>5) {
            log.error("参数不符合要求！");
            log.error("请使用:startup.sh -s <数据库名.表名> 或者 startup.sh -f <输入文件> -o <输出文件>");
            return;
        }

        if (args.length == 3 && !"-s".equals(args[1])) {
            log.error("参数不符合要求！");
            log.error("请使用:startup.sh -s <数据库名.表名> 或者 startup.sh -f <输入文件> -o <输出文件>");
            return;
        }

        if (args.length == 5 && !("-f".equals(args[1]) && "-o".equals(args[3]))) {
            log.error("参数不符合要求！");
            log.error("请使用:startup.sh -s <数据库名.表名> 或者 startup.sh -f <输入文件> -o <输出文件>");
            return;
        }

        ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
        ConfigurableEnvironment environment = context.getEnvironment();
        // 当前项目环境
        System.out.println("spring.profiles.active = " + environment.getProperty("spring.profiles.active"));
        String contextPath = environment.getProperty("server.servlet.context-path");
        System.out.println("contextPath = " + contextPath);

        DatabaseConfig databaseConfig = (DatabaseConfig) context.getBean("databaseConfig");

        if (args.length == 3){
            T2GTool.getGbaseSql(databaseConfig.getConfig(),args[2]);
        }else {
            T2GTool.writeGbaseSqlToFile(databaseConfig.getConfig(),args[2],args[4]);
        }
    }
}
